From 7dcaf7de5f023533592bff28a77f28930f66636d Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Wed, 2 Aug 2006 09:58:06 +0100 Subject: [PATCH] [SHADOW] Build p2m mapping according to m2p mapping. Signed-off-by: Xin Li Signed-off-by: Yunhong Jiang --- xen/arch/x86/shadow32.c | 6 ++++-- xen/arch/x86/shadow_public.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/shadow32.c b/xen/arch/x86/shadow32.c index 8dece9d52a..a2c82138c3 100644 --- a/xen/arch/x86/shadow32.c +++ b/xen/arch/x86/shadow32.c @@ -990,18 +990,20 @@ alloc_p2m_table(struct domain *d) list_ent = d->page_list.next; - for ( gpfn = 0; list_ent != &d->page_list; gpfn++ ) + while ( list_ent != &d->page_list ) { page = list_entry(list_ent, struct page_info, list); mfn = page_to_mfn(page); + gpfn = get_gpfn_from_mfn(mfn); + if ( !(error = map_p2m_entry(l1tab, gpfn, mfn)) ) { domain_crash(d); break; } - list_ent = frame_table[mfn].list.next; + list_ent = page->list.next; } unmap_domain_page(l1tab); diff --git a/xen/arch/x86/shadow_public.c b/xen/arch/x86/shadow_public.c index 44833b68bc..9350aa6d72 100644 --- a/xen/arch/x86/shadow_public.c +++ b/xen/arch/x86/shadow_public.c @@ -1617,20 +1617,22 @@ alloc_p2m_table(struct domain *d) list_ent = d->page_list.next; - for ( gpfn = 0; list_ent != &d->page_list; gpfn++ ) + while ( list_ent != &d->page_list ) { struct page_info *page; page = list_entry(list_ent, struct page_info, list); mfn = page_to_mfn(page); + gpfn = get_gpfn_from_mfn(mfn); + if ( !(error = map_p2m_entry(top_tab, gpfn, mfn)) ) { domain_crash(d); break; } - list_ent = frame_table[mfn].list.next; + list_ent = page->list.next; } unmap_domain_page(top_tab); -- 2.30.2